#include <bits/stdc++.h>
#define int long long 
using namespace std;

const int maxn = 2e6 + 10;
int nex[maxn][27]; 
int cnt[maxn]; // 记录这个字符串出现了多少次
int idx=2; // 1 为根, 所以从 2 号节点开始开辟


int n, m;

void insert(char s[]){
	int root=1; // 1 号为根节点
	int len=strlen(s+1); // 注意 + 1
	for(int i=1;i<=len;i++){ // 注意范围为 len, 而不是 n
		if(nex[root][s[i]-'a']==0){ // 不存在 
			nex[root][s[i]-'a'] = idx++; // 开点 注意是 -'a', 不是 -'0'
		}
		root=nex[root][s[i]-'a'];
	}
	cnt[root]++; // 记录个数
}

bool check(char s[]){
	int root=1;
	int len=strlen(s+1); // 注意 + 1
	for(int i=1;i<=len;i++){ // 根为 
		root=nex[root][s[i]-'a']; // 假如不存在的话, root 会是0, 然后 root[0][x] 都是 0, 所以最后结果一定是0
	} // 注意是 -'a', 不是 -'0'
	return root!=0;
}

void solve(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		char s[maxn];
		cin>>s+1;
		insert(s);
	}
	
	for(int i=1;i<=m;i++){
		char t[maxn];
		cin>>t+1;
		if(check(t)){
			cout<<"Y"<<'\n';
		} else {
			cout<<"N"<<'\n';			
		}
	}
}


signed main(){
	ios::sync_with_stdio(0);
	solve();
	return 0;
}
